package com.sg.dto.biz.app.req;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * @desc AddEvaObjTargetCycleComReqDto
 * @使用场景
 */
@Data
public class AddEvaObjTargetCycleComReqDto
        extends BaseDto
        implements Serializable {

    /**
     * 上级被评对象目标周期标识
     */
    @ApiModelProperty("上级被评对象目标周期标识")
    private String parentEvaObjTargetCycleId;

    /**
     * 被评对象目标周期标识
     */
    @NotNull(message = "被评对象目标周期标识不能为空")
    @ApiModelProperty("被评对象目标周期标识")
    private String evaObjTargetCycleCode;

    /**
     * 冗余评价对象ID
     */
    @ApiModelProperty("冗余评价对象ID")
    private String evaluationObjectId;

    /**
     * 关联目标内容类型编码 TARGET:目标 TARGET_CATEGORY:目标分类 OBJECTIVE:指标
     */
    @NotNull(message = "关联目标内容类型编码不能为空")
    @ApiModelProperty("关联目标内容类型编码")
    private String targetCycleContentTypeCode;

    /**
     * 关联目标内容ID
     */
    @NotNull(message = "关联目标内容ID不能为空")
    @ApiModelProperty("关联目标内容ID")
    private String targetCycleContentId;

    /**
     * 是否用于一级部门 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否用于一级部门")
    private String isUseFirstDept;

    /**
     * 关联末级目标分类ID
     */
    @ApiModelProperty("关联末级目标分类ID")
    private String correlationLastTargetCatId;

    /**
     * 是否父周期 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否父周期不能为空")
    @ApiModelProperty("是否父周期")
    private String isParentCycle;

    /**
     * 是否子周期 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否子周期不能为空")
    @ApiModelProperty("是否子周期")
    private String isSubCycle;

    /**
     * 是否中期 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否中期不能为空")
    @ApiModelProperty("是否中期")
    private String isMetaphase;

    /**
     * 是否有过程周期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否有过程周期")
    private String haveProcessCycle;

    /**
     * 冗余业务场景标识配置项
     */
    @NotNull(message = "冗余业务场景标识配置项不能为空")
    @ApiModelProperty("冗余业务场景标识配置项")
    private String bizSceneCode;

    /**
     * 冗余评价主题类型配置项
     */
    @NotNull(message = "冗余评价主题类型配置项不能为空")
    @ApiModelProperty("冗余评价主题类型配置项")
    private String evaluationSubjectTypeCode;

    /**
     * 冗余评价模板类型配置项
     */
    @NotNull(message = "冗余评价模板类型配置项不能为空")
    @ApiModelProperty("冗余评价模板类型配置项")
    private String evaluationTemplateTypeCode;

    /**
     * 冗余规划类型 GENERAL_PLANNING:常规规划 THEMATIC_PLANNING:专题规划
     */
    @NotNull(message = "冗余规划类型不能为空")
    @ApiModelProperty("冗余规划类型")
    private String planningType;

    /**
     * 冗余目标ID
     */
    @NotNull(message = "冗余目标ID不能为空")
    @ApiModelProperty("冗余目标ID")
    private String targetId;

    /**
     * 冗余评价主题ID
     */
    @NotNull(message = "冗余评价主题ID不能为空")
    @ApiModelProperty("冗余评价主题ID")
    private String evaluationSubjectId;

    /**
     * 冗余评价模板ID
     */
    @NotNull(message = "冗余评价模板ID不能为空")
    @ApiModelProperty("冗余评价模板ID")
    private String evaluationTemplateId;

    /**
     * 周期开始时间
     */
    @NotNull(message = "周期开始时间不能为空")
    @ApiModelProperty("周期开始时间")
    private Date cycleStartTime;

    /**
     * 周期结束时间
     */
    @NotNull(message = "周期结束时间不能为空")
    @ApiModelProperty("周期结束时间")
    private Date cycleEndTime;

    /**
     * 周期类型标识
     */
    @ApiModelProperty("周期类型标识")
    private String cycleTypeCode;

    /**
     * 父周期周期类型
     */
    @ApiModelProperty("父周期周期类型")
    private String fatherCycleType;

    /**
     * 中期周期类型
     */
    @ApiModelProperty("中期周期类型")
    private String midCycleType;

    /**
     * 中期子周期数量
     */
    @ApiModelProperty("中期子周期数量")
    private Long midSubcycleQuantity;

    /**
     * 目标内容编号
     */
    @ApiModelProperty("目标内容编号")
    private String targetContentNumber;

    /**
     * 相对上级排序
     */
    @ApiModelProperty("相对上级排序")
    private Long relativeOrderNumber;

    /**
     * 评价模板创建时间排序
     */
    @NotNull(message = "评价模板创建时间排序不能为空")
    @ApiModelProperty("评价模板创建时间排序")
    private Date sortCreateTime;

    /**
     * 批次标识
     */
    @NotNull(message = "批次标识不能为空")
    @ApiModelProperty("批次标识")
    private String batchCode;

}
